Skip to content

与寄生构造函数模式类似,但是不使用 this 关键字或者 new 操作符来定义对象,因此创建的对象不会因为错误的使用而导致数据被篡改。

稳妥构造函数模式 (推荐 Es6,过时禁止使用的)

js
function Person(name, age) {
  let obj = {};
  obj.sayHello = function () {
    console.log(
      "Hello, my name is " + name + " and I am " + age + " years old."
    );
  };
  return obj;
}

let person1 = Person("John", 30);
let person2 = Person("Alice", 25);

person1.sayHello(); // 输出:Hello, my name is John and I am 30 years old.
person2.sayHello(); // 输出:Hello, my name is Alice and I am 25 years old.

缺点

  • 无法使用 instanceof 运算符来检测对象类型,因为创建的对象与构造函数没有任何关联。